/*
 *
 * Copyright (C) 2008 Jose Javier García Zornoza.
 *
 * Este es un programa libre; puedes distribuirlo y/o modificarlo bajo
 * los términos de la versión 2 (o cualquier versión posterior) de la Licencia
 * Pública General de la Fundación de Software Libre.
 * Este programa se distribuye con la esperanza  de poder ser útil, pero sin
 * NINGUNA GARANTIA; tampoco la garantía implícita de COMERCIALIZACION o DEDICACIÓN
 * A UN PROPOSITO PARTICULAR. Ver la licencia GNU GPL para más detalles.
 * Deberías haber recibido una copia de la licencia GNU GPL con este programa;
 * en caso contrario puedes obtener una copia visitando el sitio web www.fsf.org
 * o escribiendo a la Fundación de Software Libre, Inc., 59 Temple
 * Place - Suite 330, Boston, MA  02111-1307, USA.
 *
 */
package org.gruposp2p.dnie.xml.jaxb;

import com.sun.xml.bind.marshaller.NamespacePrefixMapper;
import java.util.HashMap;

/**
 *
 * @author jj
 */
public class NamespacePrefixMapperImpl extends NamespacePrefixMapper {

    public static final String XML_DSIG = "http://www.w3.org/2000/09/xmldsig#";

    public static final String XML_DNIE = "http://www.gruposp2p.org/2009/10/xmldnie#";

    private final static String[] uris = new String[]{XML_DSIG, XML_DNIE};
    HashMap mappings;

    public NamespacePrefixMapperImpl() {
        mappings = new HashMap();
        setDefaultMappings();
    }

    protected void setDefaultMappings() {
        mappings.clear();
        addMapping(XML_DSIG, "ds");
        addMapping(XML_DNIE, "dsData");
        //addMapping("http://java.sun.com/xml/ns/jaxb", "jaxb");
    }

    public void addMapping(String uri, String prefix) {
        mappings.put(uri, prefix);
    }

    public String getMapping(String uri){
        return (String)mappings.get(uri);
    }

    public HashMap getMappings(){
        return mappings;
    }

    public String getPreferredPrefix(
        String namespaceURI, String suggestion, boolean requirePrefix) {
        String toReturn = getMapping(namespaceURI);
        if(toReturn != null) return toReturn;
        return suggestion;
    }

}
